package com.example.xiaoshuo_yudu.config;

import org.springframework.amqp.core.Queue;
import org.springframework.amqp.core.QueueBuilder;
import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;
import org.springframework.amqp.support.converter.MessageConverter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;


/**
 * 作者:xuSen
 * 日期2025/4/17 9:36
 */
@Configuration
public class RabbitConfiguration {
    /**
     * 声明一个名为emailQueue的Bean，用于创建和配置RabbitMQ中的队列
     * 使用QueueBuilder的durable方法确保队列在RabbitMQ重启后仍然存在
     * 队列的名称为email，这个名称在RabbitMQ中用作标识符
     *
     * @return 返回一个持久化的、名为email的队列实例
     */
    @Bean("emailQueue")
    public Queue emailQueue() {
        return QueueBuilder.durable("email").build();
    }
    /**
     * 声明章节预缓存队列
     * 持久化队列，消息1分钟未消费自动过期
     */
    @Bean("chapterPreCacheQueue")
    public Queue chapterPreCacheQueue() {
        return QueueBuilder.durable("chapter_pre_cache")
                .withArgument("x-message-ttl", 60000)  // 过期时间：60秒
                .withArgument("x-max-length", 10000)   // 最大消息：10000，防止队列堆积
                .build();
    }
//    消息转换器
    @Bean
    public MessageConverter jsonMessageConverter() {
        return new Jackson2JsonMessageConverter();
    }
}
